package br.ufrn.imd.nota

import grails.converters.JSON
import br.ufrn.imd.comum.Aluno
import br.ufrn.imd.comum.Disciplina
import br.ufrn.imd.comum.Turma
import br.ufrn.imd.nota.Nota

class NotaController {

	def scaffold = true

	def index(){
		[listaDisciplina:Disciplina.list()]
	}

	def lancarNota(Long id){
		def disciplina = Disciplina.get(id)
		def sql = {
			createAlias("disciplinas","d")
			createAlias("alunos","a")
			inList("d.id",[disciplina.id])
			order("a.nome","asc")
		}

		def listaAluno = Turma.createCriteria().get(sql)?.alunos
		[disciplina:disciplina,listaAluno:listaAluno]
	}

	def enviarNota(){
		def valor = Float.parseFloat(params.valor)
		def unidade = params.unidade
		def aluno = Aluno.get(Long.parseLong(params.aluno))
		def disciplina = Disciplina.get(Long.parseLong(params.disciplina))

		def notaAtual = Nota.findByAlunoAndDisciplinaAndUnidade(aluno,disciplina,unidade)
		if(notaAtual){
			notaAtual.nota = valor
			notaAtual.save()
		} else{
			new Nota(aluno:aluno,disciplina:disciplina,unidade:unidade,nota:valor).save()
		}

		render(status:200)
	}

	def carregar(Long id){
		def disciplina = Disciplina.get(id)
		def listaNota = Nota.findAllByDisciplina(disciplina)

		def retorno = [:]

		listaNota.each { nota->
			retorno.put("nota-${nota.aluno.id}-${nota.unidade}",nota.nota)
		}

		render retorno as JSON
	}
}
